There are many ways to construct a computer model of a physical structure, such as by scanning the structure and generating a virtual model from the resultant scan data. These techniques become more complicated for large structures, which can have very complex surfaces due to the amount of equipment, fixtures, and other objects that could be present in the scan.
One technique for constructing these computer models begins by laser scanning the structure. In the laser scanning process, a laser beam scans across a view that encompasses the structure of interest. The scanning device measures a large number of points that lie on surfaces within an unobstructed line of sight of the scanning device. Each scan point has a measured location in 3D space, to within some measurement error, that typically is recorded relative to a point (x,y,z) in the local coordinate system of the scanner. The resulting collection of points is often referred to as one or more point clouds, where each point cloud can include points that lie on many different surfaces in the scanned view. For example, a scan taken at a petroleum refinery may include a point cloud that has points that correspond to pipes, elbows, valves, pumps, and structural steel members. Once the 3D data for the points in the scan have been collected, the data typically are registered to create a single data set including all the scan points. This single set then can be processed to generate a computer (virtual) model of the structure using techniques known in the art.
It often is desirable to find features such as edges that are contained in the point cloud. Points that lie near an edge can be grouped together, then processed by a prior-art fit procedure to construct a geometric model of the edge. This can be difficult using two-dimensional representations of 3-D data, and often requires a number of manual steps for the user, such as selecting an area thought to contain an edge, manually rotating a view of the edge in order to view a cross-section of the edge, drawing a shape thought to correspond to the edge, and then allowing the computer or processor to attempt to find the edge corresponding to that shape and vertex. Typically, a fit procedure generates a geometric primitive of the edge of interest from the selected surface points. Once the primitive has been generated, fit statistics are reviewed. Frequently, the fit statistics fall below acceptable levels due to the inadvertent inclusion of points not on the surface of interest. When this occurs, the user must perform additional manual segmentation, drawing, or scaling steps to remove these spurious points. As a result, this procedure for generating a computer model of an edge from 3D point data is a time-consuming and error-prone process. A step-wise approach taken by such systems to locate the edge also often overshoots or undershoots the ends of the edge due to the ends of the edge not corresponding to an end of a corresponding step. Such approaches also typically are not able to follow irregular shapes or non-linear edges, or to follow edges where there are gaps or spurious data points along the edge.
Another problem with existing approaches is that point-by-point methods are forced to use full data density, even if not required by the application. In real scanner data collection there often are significant variations in the density of point data across a scanned surface, and existing approaches do not deal well with variable density. There is no inherent sense of scale to guide point decimation. Derivative methods, including local curvature methods and methods depending on normal vectors, tend to degrade as the point spacing becomes small relative to the measurement noise in the data. Further, many existing algorithms require an estimate of the surface normal vector at each data point, which can be computationally intensive (especially on unordered data) and sensitive to point density, noise, and occlusions.